# file name: app/network_monitor/collector/base_collector.py
from abc import ABC, abstractmethod
from typing import List, Dict


class BaseDataCollector(ABC):
    """Abstract base class for all data collectors.

    Provides the interface for collecting raw alerts from different monitoring sources.
    """

    @abstractmethod
    def collect_raw_alerts(self) -> List[Dict]:
        """Collect raw alert data from the monitoring source.

        Returns:
            List[Dict]: A list of raw alert dictionaries.
        """
        pass

    @abstractmethod
    def get_source_type(self) -> str:
        """Get the identifier for the data source type.

        Returns:
            str: The source type identifier (e.g., 'zabbix', 'branch', 'external')
        """
        pass
